Looker API経由でログインしてaccess_tokenをゲットする
LookerはAPIが豊富というのはよく語られることですが、実際に目で見て感じようと思い、がんばりました。
Looker API
冒頭でも触れましたが、LookerのプラットフォームでできることはAPIでもできます。
また、LookerからのAPI経由でのデータの取得は、既にブログになっています。このブログを以ってしてもなおcurlと闘わざるをえなかった無力さよ・・・。
今回は、APIをたたく際に必要なaccess_tokenを取得して、model一覧を取得してみます。
実行環境
macOS Catalina 10.15.4
google chrome 81.0.4044.138
Looker 7.6
access_tokenを取得する
まず、認証情報取得にclient_id
とclient_secret
が必要なので発行します。Admin > Usersで自分を探してActionからEdit
を選択します。
API3 Keysの欄のEdit Keys
を選択すると、Client IDとClient Secretが表示されるので、メモしておきます。
初めての場合は、New API3 Key
を選択すると生成されます。
今回はシンプルにAPIのポートは19999を使用します。その他のポートを使用する場合には、別途 Admin > APIから設定が必要です。
そして、curlを使用した認証情報の取得方法はGitHubに掲載されています。
先ほどメモしたclient_idとclient_secretをコピペして、URLも該当のものに直します。
# Do the login to get an access_token curl -i -d "client_id=xxxxxxxxxx&client_secret=xxxxxxxxxx" \ https://<instance_name>.looker.com:19999/login HTTP/1.1 200 OK Server: nginx Date: Thu, 21 May 2020 05:35:20 GMT Content-Type: application/json Content-Length: 99 Connection: keep-alive Vary: Accept-Encoding X-Content-Type-Options: nosniff {"access_token":"xxxxxxxxxx","token_type":"Bearer","expires_in":3600}%
無事にaccess_tokenが取得できました!
今回のつまりポイントその1は、改行\とURLの間にスペースを入れていなかった。 その2はURLを間違えないようにとブラウザのアドレスバーからコピペしたら.com/とスラッシュが入ってしまっているのに気づかずに実行してしまった点でした。
こんな感じですね:https://<instance_name>.looker.com/:19999/login
オプションは、こちらのブログを参考にメモメモ。
オプション | 説明 |
---|---|
-i | HTTPヘッダを出力に含める |
-d | POSTリクエストとしてフォームを送信する |
モデルの一覧を取得する
APIでできることはこちら。
今回は、LookmlModel : Manage LookML ModelsのGet All LookML Modelsを試して、結果をCSVに出力します。
YOUR_ACCESS_TOKEN
に先ほど取得したaccess_tokenを入力して、今回はオプションでファイル出力も指定します。
curl -i -H "Authorization: token YOUR_ACCESS_TOKEN" \ https://<instance_name>.looker.com:19999/api/3.1/lookml_models -o models.csv % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 33342 100 33342 0 0 77901 0 --:--:-- --:--:-- --:--:-- 77901
こんな感じで出力されていました!
先ほどのプログを参考に、再度メモメモ。
オプション | 説明 |
---|---|
-H | HEADER HTTPヘッダにHEADERを追加もしくは変更する |
まとめ
APIで呼び出せたり、情報を送れたりすれば柔軟にLookerを使用することができますね。
APIで格闘するのが楽しかったので、もう少し別の情報を呼び出したり、更新できたりできたらまたブログに書きます。
Lookerのマーケットプレースも色々と試してブログにするぞ。